Let x0 of type ι → ι → ο be given.
Let x1 of type ι → ι be given.
Assume H1: ∀ x2 x3 . x0 x2 x3 ⟶ x1 x2 = x1 x3.
Let x2 of type ι be given.
Let x3 of type ι be given.
Assume H2: x0 x2 x3.
Apply If_i_correct with
x0 x2 (x1 x2),
x1 x2,
canonical_elt x0 x2,
canonical_elt_def x0 x1 x2 = canonical_elt_def x0 x1 x3 leaving 2 subgoals.
Apply H3 with
canonical_elt_def x0 x1 x2 = canonical_elt_def x0 x1 x3.
Assume H4: x0 x2 (x1 x2).
Apply H5 with
λ x4 x5 . x5 = canonical_elt_def x0 x1 x3.
Claim L6: x0 x3 (x1 x3)
Apply H1 with
x2,
x3,
λ x4 x5 . x0 x3 x4 leaving 2 subgoals.
The subproof is completed by applying H2.
Apply per_stra1 with
x0,
x3,
x2,
x1 x2 leaving 3 subgoals.
The subproof is completed by applying H0.
The subproof is completed by applying H2.
The subproof is completed by applying H4.
Apply If_i_1 with
x0 x3 (x1 x3),
x1 x3,
canonical_elt x0 x3,
λ x4 x5 . x1 x2 = x5 leaving 2 subgoals.
The subproof is completed by applying L6.
Apply H1 with
x2,
x3.
The subproof is completed by applying H2.
Apply H3 with
canonical_elt_def x0 x1 x2 = canonical_elt_def x0 x1 x3.
Assume H4:
not (x0 x2 (x1 x2)).
Apply H5 with
λ x4 x5 . x5 = canonical_elt_def x0 x1 x3.
Claim L6:
not (x0 x3 (x1 x3))
Apply H1 with
x2,
x3,
λ x4 x5 . not (x0 x3 x4) leaving 2 subgoals.
The subproof is completed by applying H2.
Assume H6: x0 x3 (x1 x2).
Apply H4.
Apply per_tra with
x0,
x2,
x3,
x1 x2 leaving 3 subgoals.
The subproof is completed by applying H0.
The subproof is completed by applying H2.
The subproof is completed by applying H6.
Apply If_i_0 with
x0 x3 (x1 x3),
x1 x3,
canonical_elt x0 x3,
λ x4 x5 . canonical_elt x0 x2 = x5 leaving 2 subgoals.
The subproof is completed by applying L6.
Apply canonical_elt_eq with
x0,
x2,
x3 leaving 2 subgoals.
The subproof is completed by applying H0.
The subproof is completed by applying H2.