Quantification #
This file characterizes existential and universal quantification
of variables in a PropFun.
noncomputable def
Trestle.Model.PropFun.existsAssn
{ν' : Type u_1}
[Fintype ν']
{ν : Type u_2}
(f : PropAssignment ν → PropAssignment ν')
(φ : PropFun ν)
:
PropFun ν'
Most general form of existential quantification.
True at τ iff there exists a model of φ whose image under f is τ.
Equations
- Trestle.Model.PropFun.existsAssn f φ = Trestle.Model.PropFun.ofSet {τ : Trestle.Model.PropAssignment ν' | ∃ (σ : Trestle.Model.PropAssignment ν), σ ⊨ φ ∧ τ = f σ}
Instances For
@[simp]
theorem
Trestle.Model.PropFun.satisfies_exists
{ν' : Type u_2}
[Fintype ν']
{ν : Type u_1}
{φ : PropFun ν}
(f : PropAssignment ν → PropAssignment ν')
(τ : PropAssignment ν')
:
noncomputable def
Trestle.Model.PropFun.existsInv
{ν' : Type u_1}
[Fintype ν']
{ν : Type u_2}
(f : ν' → ν)
(φ : PropFun ν)
:
PropFun ν'
Equations
- Trestle.Model.PropFun.existsInv f φ = Trestle.Model.PropFun.existsAssn (fun (σ : Trestle.Model.PropAssignment ν) => Trestle.Model.PropAssignment.map f σ) φ
Instances For
@[simp]
theorem
Trestle.Model.PropFun.satisfies_existsInv
{ν' : Type u_2}
[Fintype ν']
{ν : Type u_1}
(f : ν' → ν)
(φ : PropFun ν)
(τ : PropAssignment ν')
:
noncomputable def
Trestle.Model.PropFun.forallAssn
{ν' : Type u_1}
[Fintype ν']
{ν : Type u_2}
(f : PropAssignment ν → PropAssignment ν')
(φ : PropFun ν)
:
PropFun ν'
Most general form of universal quantification.
True at τ iff for all models of φ, their image under f is τ.
Equations
- Trestle.Model.PropFun.forallAssn f φ = Trestle.Model.PropFun.ofSet {σ : Trestle.Model.PropAssignment ν' | ∀ (τ : Trestle.Model.PropAssignment ν), τ ⊨ φ → σ = f τ}
Instances For
@[simp]
theorem
Trestle.Model.PropFun.satisfies_forallAssn
{ν' : Type u_2}
[Fintype ν']
{ν : Type u_1}
{φ : PropFun ν}
(f : PropAssignment ν → PropAssignment ν')
(τ : PropAssignment ν')
:
noncomputable def
Trestle.Model.PropFun.forallInv
{ν' : Type u_1}
[Fintype ν']
{ν : Type u_2}
(f : ν' → ν)
(φ : PropFun ν)
:
PropFun ν'
Equations
- Trestle.Model.PropFun.forallInv f φ = Trestle.Model.PropFun.forallAssn (fun (σ : Trestle.Model.PropAssignment ν) => Trestle.Model.PropAssignment.map f σ) φ
Instances For
@[simp]
theorem
Trestle.Model.PropFun.satisfies_forallInv
{ν' : Type u_2}
[Fintype ν']
{ν : Type u_1}
(f : ν' → ν)
(φ : PropFun ν)
(τ : PropAssignment ν')
: