Documentation
Pdl
.
Discon
Search
return to top
source
Imports
Init
Pdl.Semantics
Pdl.Vocab
Imported by
Con
conempty
consingle
listEq_to_conEq
dis
disempty
dissingle
listEq_to_disEq
discon
disconempty
disconsingle
conEvalHT
conEval
disEvalHT
disEval
disconEvalHT
disconEval'
disconEval
pairunionList
pairunionFinset
HasUplus
«term_⊎_»
listHasUplus
finsetHasUplus
disconAnd
disconOr
union_elem_uplus
mapCon_mapForall
in_voc_dis
in_voc_con
source
def
Con
:
List
Formula
→
Formula
Equations
Con
[]
=
⊤
Con
[
f
]
=
f
Con
(
f
::
rest
)
=
f
⋀
Con
rest
Instances For
source
@[simp]
theorem
conempty
:
Con
∅
=
⊤
source
@[simp]
theorem
consingle
{f :
Formula
}
:
Con
[
f
]
=
f
source
theorem
listEq_to_conEq
{l1 l2 :
List
Formula
}
:
l1
=
l2
→
Con
l1
=
Con
l2
source
def
dis
:
List
Formula
→
Formula
Equations
dis
[]
=
⊥
dis
[
f
]
=
f
dis
(
f
::
rest
)
=
f
⋁
dis
rest
Instances For
source
@[simp]
theorem
disempty
:
dis
∅
=
⊥
source
@[simp]
theorem
dissingle
{f :
Formula
}
:
dis
[
f
]
=
f
source
theorem
listEq_to_disEq
{l1 l2 :
List
Formula
}
:
l1
=
l2
→
dis
l1
=
dis
l2
source
def
discon
:
List
(
List
Formula
)
→
Formula
Equations
discon
[]
=
⊥
discon
[
X
]
=
Con
X
discon
(
X
::
rest
)
=
Con
X
⋁
discon
rest
Instances For
source
@[simp]
theorem
disconempty
:
discon
{
∅
}
=
⊤
source
@[simp]
theorem
disconsingle
{f :
Formula
}
:
discon
[
[
f
]
]
=
f
source
theorem
conEvalHT
{X :
List
Formula
}
{f :
Formula
}
{W :
Type
}
{M :
KripkeModel
W
}
{w :
W
}
:
evaluate
M
w
(
Con
(
f
::
X
)
)
↔
evaluate
M
w
f
∧
evaluate
M
w
(
Con
X
)
source
theorem
conEval
{W :
Type
}
{M :
KripkeModel
W
}
{X :
List
Formula
}
{w :
W
}
:
evaluate
M
w
(
Con
X
)
↔
∀
f
∈
X
,
evaluate
M
w
f
source
theorem
disEvalHT
{X :
List
Formula
}
{f :
Formula
}
{W :
Type
}
{M :
KripkeModel
W
}
{w :
W
}
:
evaluate
M
w
(
dis
(
f
::
X
)
)
↔
evaluate
M
w
f
∨
evaluate
M
w
(
dis
X
)
source
theorem
disEval
{W :
Type
}
{M :
KripkeModel
W
}
{X :
List
Formula
}
{w :
W
}
:
evaluate
M
w
(
dis
X
)
↔
∃
f
∈
X
,
evaluate
M
w
f
source
theorem
disconEvalHT
{X :
List
Formula
}
(XS :
List
(
List
Formula
)
)
:
discon
(
X
::
XS
)
≡
Con
X
⋁
discon
XS
source
theorem
disconEval'
{W :
Type
}
{M :
KripkeModel
W
}
{w :
W
}
{N :
ℕ
}
(XS :
List
(
List
Formula
)
)
:
XS
.length
=
N
→
(
evaluate
M
w
(
discon
XS
)
↔
∃
Y
∈
XS
,
∀
f
∈
Y
,
evaluate
M
w
f
)
source
theorem
disconEval
{W :
Type
}
{M :
KripkeModel
W
}
{w :
W
}
(XS :
List
(
List
Formula
)
)
:
evaluate
M
w
(
discon
XS
)
↔
∃
Y
∈
XS
,
∀
f
∈
Y
,
evaluate
M
w
f
source
def
pairunionList
:
List
(
List
Formula
)
→
List
(
List
Formula
)
→
List
(
List
Formula
)
Equations
pairunionList
x✝¹
x✝
=
(
List.map
(fun (
xl
:
List
Formula
) =>
List.map
(fun (
yl
:
List
Formula
) =>
xl
++
yl
)
x✝
)
x✝¹
)
.flatten
Instances For
source
def
pairunionFinset
:
Finset
(
Finset
Formula
)
→
Finset
(
Finset
Formula
)
→
Finset
(
Finset
Formula
)
Equations
pairunionFinset
x✝¹
x✝
=
x✝¹
.biUnion
fun (
ga
:
Finset
Formula
) =>
x✝
.biUnion
fun (
gb
:
Finset
Formula
) =>
{
ga
∪
gb
}
Instances For
source
class
HasUplus
(α :
Type
→
Type
)
:
Type
pairunion :
α
(
α
Formula
)
→
α
(
α
Formula
)
→
α
(
α
Formula
)
Instances
source
def
«term_⊎_»
:
Lean.TrailingParserDescr
Equations
«term_⊎_»
=
Lean.ParserDescr.trailingNode
`«term_⊎_»
77
77
(
Lean.ParserDescr.binary
`andthen
(
Lean.ParserDescr.symbol
"⊎"
)
(
Lean.ParserDescr.cat
`term
78
)
)
Instances For
source
instance
listHasUplus
:
HasUplus
List
Equations
listHasUplus
=
{
pairunion
:=
pairunionList
}
source
instance
finsetHasUplus
:
HasUplus
Finset
Equations
finsetHasUplus
=
{
pairunion
:=
pairunionFinset
}
source
theorem
disconAnd
{XS YS :
List
(
List
Formula
)
}
:
discon
(
XS
⊎
YS
)
≡
discon
XS
⋀
discon
YS
source
theorem
disconOr
{XS YS :
List
(
List
Formula
)
}
:
discon
(
XS
∪
YS
)
≡
discon
XS
⋁
discon
YS
source
theorem
union_elem_uplus
{XS YS :
Finset
(
Finset
Formula
)
}
{X Y :
Finset
Formula
}
:
X
∈
XS
→
Y
∈
YS
→
X
∪
Y
∈
XS
⊎
YS
source
theorem
mapCon_mapForall
{W :
Type
}
{X :
List
(
List
Formula
×
List
Program
)
}
(M :
KripkeModel
W
)
(w :
W
)
(φ :
Formula
)
(g :
List
Formula
×
List
Program
→
Formula
→
List
Formula
)
:
(∃
f
∈
List.map
(fun (
Fδ
:
List
Formula
×
List
Program
) =>
Con
(
g
Fδ
φ
)
)
X
,
evaluate
M
w
f
)
↔
∃
fs
∈
List.map
(fun (
Fδ
:
List
Formula
×
List
Program
) =>
g
Fδ
φ
)
X
,
∀
f
∈
fs
,
evaluate
M
w
f
source
theorem
in_voc_dis
(n :
ℕ
⊕
ℕ
)
(L :
List
Formula
)
:
n
∈
(
dis
L
)
.voc
↔
∃
φ
∈
L
,
n
∈
φ
.voc
source
theorem
in_voc_con
(n :
ℕ
⊕
ℕ
)
(L :
List
Formula
)
:
n
∈
(
Con
L
)
.voc
↔
∃
φ
∈
L
,
n
∈
φ
.voc