Search for blocks/addresses/...
Proofgold Proof
pf
Let x0 of type
ι
be given.
Let x1 of type
ι
be given.
Assume H0:
SNo
x0
.
Assume H1:
SNo
x1
.
Apply add_SNo_prop1 with
x0
,
x1
,
SNo
(
add_SNo
x0
x1
)
leaving 3 subgoals.
The subproof is completed by applying H0.
The subproof is completed by applying H1.
Assume H2:
and
(
and
(
and
(
and
(
SNo
(
add_SNo
x0
x1
)
)
(
∀ x2 .
x2
∈
SNoL
x0
⟶
SNoLt
(
add_SNo
x2
x1
)
(
add_SNo
x0
x1
)
)
)
(
∀ x2 .
x2
∈
SNoR
x0
⟶
SNoLt
(
add_SNo
x0
x1
)
(
add_SNo
x2
x1
)
)
)
(
∀ x2 .
x2
∈
SNoL
x1
⟶
SNoLt
(
add_SNo
x0
x2
)
(
add_SNo
x0
x1
)
)
)
(
∀ x2 .
x2
∈
SNoR
x1
⟶
SNoLt
(
add_SNo
x0
x1
)
(
add_SNo
x0
x2
)
)
.
Apply H2 with
SNoCutP
(
binunion
{
add_SNo
x2
x1
|x2 ∈
SNoL
x0
}
(
prim5
(
SNoL
x1
)
(
add_SNo
x0
)
)
)
(
binunion
{
add_SNo
x2
x1
|x2 ∈
SNoR
x0
}
(
prim5
(
SNoR
x1
)
(
add_SNo
x0
)
)
)
⟶
SNo
(
add_SNo
x0
x1
)
.
Assume H3:
and
(
and
(
and
(
SNo
(
add_SNo
x0
x1
)
)
(
∀ x2 .
x2
∈
SNoL
x0
⟶
SNoLt
(
add_SNo
x2
x1
)
(
add_SNo
x0
x1
)
)
)
(
∀ x2 .
x2
∈
SNoR
x0
⟶
SNoLt
(
add_SNo
x0
x1
)
(
add_SNo
x2
x1
)
)
)
(
∀ x2 .
x2
∈
SNoL
x1
⟶
SNoLt
(
add_SNo
x0
x2
)
(
add_SNo
x0
x1
)
)
.
Apply H3 with
(
∀ x2 .
x2
∈
SNoR
x1
⟶
SNoLt
(
add_SNo
x0
x1
)
(
add_SNo
x0
x2
)
)
⟶
SNoCutP
(
binunion
{
add_SNo
x2
x1
|x2 ∈
SNoL
x0
}
(
prim5
(
SNoL
x1
)
(
add_SNo
x0
)
)
)
(
binunion
{
add_SNo
x2
x1
|x2 ∈
SNoR
x0
}
(
prim5
(
SNoR
x1
)
(
add_SNo
x0
)
)
)
⟶
SNo
(
add_SNo
x0
x1
)
.
Assume H4:
and
(
and
(
SNo
(
add_SNo
x0
x1
)
)
(
∀ x2 .
x2
∈
SNoL
x0
⟶
SNoLt
(
add_SNo
x2
x1
)
(
add_SNo
x0
x1
)
)
)
(
∀ x2 .
x2
∈
SNoR
x0
⟶
SNoLt
(
add_SNo
x0
x1
)
(
add_SNo
x2
x1
)
)
.
Apply H4 with
(
∀ x2 .
...
⟶
SNoLt
(
add_SNo
x0
x2
)
...
)
⟶
(
∀ x2 .
x2
∈
SNoR
x1
⟶
SNoLt
(
add_SNo
x0
x1
)
(
add_SNo
x0
x2
)
)
⟶
SNoCutP
(
binunion
{
add_SNo
x2
x1
|x2 ∈
SNoL
x0
}
(
prim5
(
SNoL
x1
)
(
add_SNo
x0
)
)
)
(
binunion
{
add_SNo
x2
x1
|x2 ∈
SNoR
x0
}
(
prim5
(
SNoR
x1
)
(
add_SNo
x0
)
)
)
⟶
SNo
(
add_SNo
x0
x1
)
.
...
■