Test 4
Show that if {B \times C = \mathbf{1}}, then {B = \mathbf{1}}.
Your demonstration should work in any category.
Hint: First explain what '{B \times C = \mathbf{1}}' means!
Solution: Problem 1
Since {B \times C} is both a product and a terminal object, we have
noncomputable
example {π : Type u} [Category.{v, u} π] [HasTerminal π] {B C : π}
[HasBinaryProduct B C] (h : B β¨― C β
β€_ π) : B β
β€_ π := π:Type uinstβΒ²:Category.{v, u} πinstβΒΉ:HasTerminal πB:πC:πinstβ:HasBinaryProduct B Ch:B β¨― C β
β€_ πβ’ B β
β€_ π
π:Type uinstβΒ²:Category.{v, u} πinstβΒΉ:HasTerminal πB:πC:πinstβ:HasBinaryProduct B Ch:B β¨― C β
β€_ πtBxC:IsTerminal (B β¨― C) := terminalIsTerminal.ofIso h.symmβ’ B β
β€_ π
π:Type uinstβΒ²:Category.{v, u} πinstβΒΉ:HasTerminal πB:πC:πinstβ:HasBinaryProduct B Ch:B β¨― C β
β€_ πtBxC:IsTerminal (B β¨― C) := terminalIsTerminal.ofIso h.symmiso:B β
B β¨― C := { hom := prod.lift (π B) (prod.snd β tBxC.from B), inv := prod.fst, hom_inv_id := β―, inv_hom_id := β― }β’ B β
β€_ π
All goals completed! π
All parts of this problem are in πΊβ, the category of irreflexive graphs.
abbrev IrreflexiveGraph.D : IrreflexiveGraph := {
carrierA := Empty
carrierD := Unit
toSrc := Empty.elim
toTgt := Empty.elim
}
abbrev IrreflexiveGraph.A : IrreflexiveGraph := {
carrierA := Unit
carrierD := Fin 2
toSrc := fun _ β¦ 0
toTgt := fun _ β¦ 1
}
def B : IrreflexiveGraph := {
carrierA := Fin 2
carrierD := Fin 2
toSrc := fun
| 0 => 0
| 1 => 0
toTgt := fun
| 0 => 0
| 1 => 1
}
def C : IrreflexiveGraph := {
carrierA := Fin 2
carrierD := Fin 3
toSrc := fun
| 0 => 1
| 1 => 1
toTgt := fun
| 0 => 0
| 1 => 2
}
(a) Find the number of maps {\mathbf{1} \rightarrow B + D} and the number of maps {\mathbf{1} \rightarrow C}.
(b) 'Calculate' {A \times B}, {A \times D}, and {A \times C}. (Draw picturesβinternal diagramsβof them.)
(c) Use the distributive law, and results from (b), to calculate
A \times (B + D)
(d) Show that {A \times (B + D)} is isomorphic to {A \times C}.
Note: Comparing (a) and (d) illustrates the failure of 'cancellation':
From '{A \times (B + D) = A \times C}' we cannot cancel A and conclude that '{B + D = C}'.
Solution: Problem 2
(a) Since {B + D} has a single loop, there is exactly one map {\mathbf{1} \rightarrow B + D}.
open IrreflexiveGraph
def BuD : IrreflexiveGraph := {
carrierA := Sum B.carrierA D.carrierA
carrierD := Sum B.carrierD D.carrierD
toSrc := fun
| Sum.inl a => Sum.inl (B.toSrc a)
| Sum.inr a => Sum.inr (D.toSrc a)
toTgt := fun
| Sum.inl a => Sum.inl (B.toTgt a)
| Sum.inr a => Sum.inr (D.toTgt a)
}
example : Unique (termIG βΆ BuD) := {
default := β¨
(fun _ β¦ Sum.inl (0 : Fin 2), fun _ β¦ Sum.inl (0 : Fin 2)),
β’ (fun x β¦ Sum.inl 0, fun x β¦ Sum.inl 0).2 β termIG.toSrc = BuD.toSrc β (fun x β¦ Sum.inl 0, fun x β¦ Sum.inl 0).1 β§
(fun x β¦ Sum.inl 0, fun x β¦ Sum.inl 0).2 β termIG.toTgt = BuD.toTgt β (fun x β¦ Sum.inl 0, fun x β¦ Sum.inl 0).1 β’ (fun x β¦ Sum.inl 0, fun x β¦ Sum.inl 0).2 β termIG.toSrc = BuD.toSrc β (fun x β¦ Sum.inl 0, fun x β¦ Sum.inl 0).1β’ (fun x β¦ Sum.inl 0, fun x β¦ Sum.inl 0).2 β termIG.toTgt = BuD.toTgt β (fun x β¦ Sum.inl 0, fun x β¦ Sum.inl 0).1 β’ (fun x β¦ Sum.inl 0, fun x β¦ Sum.inl 0).2 β termIG.toSrc = BuD.toSrc β (fun x β¦ Sum.inl 0, fun x β¦ Sum.inl 0).1β’ (fun x β¦ Sum.inl 0, fun x β¦ Sum.inl 0).2 β termIG.toTgt = BuD.toTgt β (fun x β¦ Sum.inl 0, fun x β¦ Sum.inl 0).1 All goals completed! π
β©
uniq f := f:termIG βΆ BuDβ’ f = β¨(fun x β¦ Sum.inl 0, fun x β¦ Sum.inl 0), β―β©
f:termIG βΆ BuDhSrc:(βf).2 () = BuD.toSrc ((βf).1 ())β’ f = β¨(fun x β¦ Sum.inl 0, fun x β¦ Sum.inl 0), β―β©
f:termIG βΆ BuDhSrc:(βf).2 () = BuD.toSrc ((βf).1 ())hTgt:(βf).2 () = BuD.toTgt ((βf).1 ())β’ f = β¨(fun x β¦ Sum.inl 0, fun x β¦ Sum.inl 0), β―β©
f:termIG βΆ BuDhSrc:(βf).2 () = BuD.toSrc ((βf).1 ())hTgt:(βf).2 () = BuD.toTgt ((βf).1 ())h_eq:BuD.toSrc ((βf).1 ()) = BuD.toTgt ((βf).1 ())β’ f = β¨(fun x β¦ Sum.inl 0, fun x β¦ Sum.inl 0), β―β©
f:termIG βΆ BuDhSrc:(βf).2 () = BuD.toSrc ((βf).1 ())hTgt:(βf).2 () = BuD.toTgt ((βf).1 ())h_eq:BuD.toSrc ((βf).1 ()) = BuD.toTgt ((βf).1 ())β’ (βf).1 = (ββ¨(fun x β¦ Sum.inl 0, fun x β¦ Sum.inl 0), β―β©).1f:termIG βΆ BuDhSrc:(βf).2 () = BuD.toSrc ((βf).1 ())hTgt:(βf).2 () = BuD.toTgt ((βf).1 ())h_eq:BuD.toSrc ((βf).1 ()) = BuD.toTgt ((βf).1 ())β’ (βf).2 = (ββ¨(fun x β¦ Sum.inl 0, fun x β¦ Sum.inl 0), β―β©).2
all_goals
f:termIG βΆ BuDhSrc:(βf).2 () = BuD.toSrc ((βf).1 ())hTgt:(βf).2 () = BuD.toTgt ((βf).1 ())h_eq:BuD.toSrc ((βf).1 ()) = BuD.toTgt ((βf).1 ())x:termIG.carrierDβ’ (βf).2 x = (ββ¨(fun x β¦ Sum.inl 0, fun x β¦ Sum.inl 0), β―β©).2 x
f:termIG βΆ BuDhSrc:(βf).2 () = BuD.toSrc ((βf).1 ())hTgt:(βf).2 () = BuD.toTgt ((βf).1 ())h_eq:BuD.toSrc ((βf).1 ()) = BuD.toTgt ((βf).1 ())β’ (βf).2 PUnit.unit = (ββ¨(fun x β¦ Sum.inl 0, fun x β¦ Sum.inl 0), β―β©).2 PUnit.unit
f:termIG βΆ BuDa:BuD.carrierAhSrc:(βf).2 () = BuD.toSrc ahTgt:(βf).2 () = BuD.toTgt ah_eq:BuD.toSrc a = BuD.toTgt aβ’ (βf).2 PUnit.unit = (ββ¨(fun x β¦ Sum.inl 0, fun x β¦ Sum.inl 0), β―β©).2 PUnit.unit
f:termIG βΆ BuDa:BuD.carrierAhSrc:(βf).2 () = BuD.toSrc ahTgt:(βf).2 () = BuD.toTgt ah_eq:BuD.toSrc a = BuD.toTgt aβ’ (βf).2 PUnit.unit = (ββ¨(fun x β¦ Sum.inl 0, fun x β¦ Sum.inl 0), β―β©).2 PUnit.unit cases a with
f:termIG βΆ BuDb:B.carrierAhSrc:(βf).2 () = BuD.toSrc (Sum.inl b)hTgt:(βf).2 () = BuD.toTgt (Sum.inl b)h_eq:BuD.toSrc (Sum.inl b) = BuD.toTgt (Sum.inl b)β’ (βf).2 PUnit.unit = (ββ¨(fun x β¦ Sum.inl 0, fun x β¦ Sum.inl 0), β―β©).2 PUnit.unitf:termIG βΆ BuDb:B.carrierAhSrc:(βf).2 () = BuD.toSrc (Sum.inl b)hTgt:(βf).2 () = BuD.toTgt (Sum.inl b)h_eq:BuD.toSrc (Sum.inl b) = BuD.toTgt (Sum.inl b)β’ Sum.inl b = (ββ¨(fun x β¦ Sum.inl 0, fun x β¦ Sum.inl 0), β―β©).1 PUnit.unit
f:termIG βΆ BuDb:Fin 2hSrc:(βf).2 () = BuD.toSrc (Sum.inl b)hTgt:(βf).2 () = BuD.toTgt (Sum.inl b)h_eq:BuD.toSrc (Sum.inl b) = BuD.toTgt (Sum.inl b)β’ (βf).2 PUnit.unit = (ββ¨(fun x β¦ Sum.inl 0, fun x β¦ Sum.inl 0), β―β©).2 PUnit.unit
f:termIG βΆ BuDhSrc:(βf).2 () = BuD.toSrc (Sum.inl ((fun i β¦ i) β¨0, β―β©))hTgt:(βf).2 () = BuD.toTgt (Sum.inl ((fun i β¦ i) β¨0, β―β©))h_eq:BuD.toSrc (Sum.inl ((fun i β¦ i) β¨0, β―β©)) = BuD.toTgt (Sum.inl ((fun i β¦ i) β¨0, β―β©))β’ (βf).2 PUnit.unit = (ββ¨(fun x β¦ Sum.inl 0, fun x β¦ Sum.inl 0), β―β©).2 PUnit.unitf:termIG βΆ BuDhSrc:(βf).2 () = BuD.toSrc (Sum.inl ((fun i β¦ i) β¨1, β―β©))hTgt:(βf).2 () = BuD.toTgt (Sum.inl ((fun i β¦ i) β¨1, β―β©))h_eq:BuD.toSrc (Sum.inl ((fun i β¦ i) β¨1, β―β©)) = BuD.toTgt (Sum.inl ((fun i β¦ i) β¨1, β―β©))β’ (βf).2 PUnit.unit = (ββ¨(fun x β¦ Sum.inl 0, fun x β¦ Sum.inl 0), β―β©).2 PUnit.unit
f:termIG βΆ BuDhSrc:(βf).2 () = BuD.toSrc (Sum.inl ((fun i β¦ i) β¨0, β―β©))hTgt:(βf).2 () = BuD.toTgt (Sum.inl ((fun i β¦ i) β¨0, β―β©))h_eq:BuD.toSrc (Sum.inl ((fun i β¦ i) β¨0, β―β©)) = BuD.toTgt (Sum.inl ((fun i β¦ i) β¨0, β―β©))β’ (βf).2 PUnit.unit = (ββ¨(fun x β¦ Sum.inl 0, fun x β¦ Sum.inl 0), β―β©).2 PUnit.unit first | f:termIG βΆ BuDhSrc:(βf).2 () = BuD.toSrc (Sum.inl ((fun i β¦ i) β¨0, β―β©))hTgt:(βf).2 () = BuD.toTgt (Sum.inl ((fun i β¦ i) β¨0, β―β©))h_eq:BuD.toSrc (Sum.inl ((fun i β¦ i) β¨0, β―β©)) = BuD.toTgt (Sum.inl ((fun i β¦ i) β¨0, β―β©))β’ (βf).2 PUnit.unit = (ββ¨(fun x β¦ Sum.inl 0, fun x β¦ Sum.inl 0), β―β©).2 PUnit.unit | All goals completed! π
f:termIG βΆ BuDhSrc:(βf).2 () = BuD.toSrc (Sum.inl ((fun i β¦ i) β¨1, β―β©))hTgt:(βf).2 () = BuD.toTgt (Sum.inl ((fun i β¦ i) β¨1, β―β©))h_eq:BuD.toSrc (Sum.inl ((fun i β¦ i) β¨1, β―β©)) = BuD.toTgt (Sum.inl ((fun i β¦ i) β¨1, β―β©))β’ (βf).2 PUnit.unit = (ββ¨(fun x β¦ Sum.inl 0, fun x β¦ Sum.inl 0), β―β©).2 PUnit.unit f:termIG βΆ BuDhSrc:(βf).2 () = BuD.toSrc (Sum.inl ((fun i β¦ i) β¨1, β―β©))hTgt:(βf).2 () = BuD.toTgt (Sum.inl ((fun i β¦ i) β¨1, β―β©))h_eq:Sum.inl 0 = Sum.inl 1β’ (βf).2 PUnit.unit = (ββ¨(fun x β¦ Sum.inl 0, fun x β¦ Sum.inl 0), β―β©).2 PUnit.unit
All goals completed! π
try All goals completed! π
f:termIG βΆ BuDd:D.carrierAhSrc:(βf).2 () = BuD.toSrc (Sum.inr d)hTgt:(βf).2 () = BuD.toTgt (Sum.inr d)h_eq:BuD.toSrc (Sum.inr d) = BuD.toTgt (Sum.inr d)β’ (βf).2 PUnit.unit = (ββ¨(fun x β¦ Sum.inl 0, fun x β¦ Sum.inl 0), β―β©).2 PUnit.unitf:termIG βΆ BuDd:D.carrierAhSrc:(βf).2 () = BuD.toSrc (Sum.inr d)hTgt:(βf).2 () = BuD.toTgt (Sum.inr d)h_eq:BuD.toSrc (Sum.inr d) = BuD.toTgt (Sum.inr d)β’ Sum.inr d = (ββ¨(fun x β¦ Sum.inl 0, fun x β¦ Sum.inl 0), β―β©).1 PUnit.unit
All goals completed! π
}
Since C has no loops, there are no maps {\mathbf{1} \rightarrow C}.
example : IsEmpty (termIG βΆ C) := {
false f := f:termIG βΆ Cβ’ False
f:termIG βΆ ChSrc:(βf).2 () = C.toSrc ((βf).1 ())β’ False
f:termIG βΆ ChSrc:(βf).2 () = C.toSrc ((βf).1 ())hTgt:(βf).2 () = C.toTgt ((βf).1 ())β’ False
f:termIG βΆ ChSrc:(βf).2 () = C.toSrc ((βf).1 ())hTgt:(βf).2 () = C.toTgt ((βf).1 ())h_eq:C.toSrc ((βf).1 ()) = C.toTgt ((βf).1 ())β’ False
f:termIG βΆ ChSrc:(βf).2 () = C.toSrc ((βf).1 ())hTgt:(βf).2 () = C.toTgt ((βf).1 ())a:C.carrierAh_eq:C.toSrc a = C.toTgt aβ’ False
f:termIG βΆ ChSrc:(βf).2 () = C.toSrc ((βf).1 ())hTgt:(βf).2 () = C.toTgt ((βf).1 ())a:Fin 2h_eq:C.toSrc a = C.toTgt aβ’ False
f:termIG βΆ ChSrc:(βf).2 () = C.toSrc ((βf).1 ())hTgt:(βf).2 () = C.toTgt ((βf).1 ())h_eq:C.toSrc ((fun i β¦ i) β¨0, β―β©) = C.toTgt ((fun i β¦ i) β¨0, β―β©)β’ Falsef:termIG βΆ ChSrc:(βf).2 () = C.toSrc ((βf).1 ())hTgt:(βf).2 () = C.toTgt ((βf).1 ())h_eq:C.toSrc ((fun i β¦ i) β¨1, β―β©) = C.toTgt ((fun i β¦ i) β¨1, β―β©)β’ False
f:termIG βΆ ChSrc:(βf).2 () = C.toSrc ((βf).1 ())hTgt:(βf).2 () = C.toTgt ((βf).1 ())h_eq:C.toSrc ((fun i β¦ i) β¨0, β―β©) = C.toTgt ((fun i β¦ i) β¨0, β―β©)β’ False f:termIG βΆ ChSrc:(βf).2 () = C.toSrc ((βf).1 ())hTgt:(βf).2 () = C.toTgt ((βf).1 ())h_eq:1 = 0β’ False
All goals completed! π
f:termIG βΆ ChSrc:(βf).2 () = C.toSrc ((βf).1 ())hTgt:(βf).2 () = C.toTgt ((βf).1 ())h_eq:C.toSrc ((fun i β¦ i) β¨1, β―β©) = C.toTgt ((fun i β¦ i) β¨1, β―β©)β’ False f:termIG βΆ ChSrc:(βf).2 () = C.toSrc ((βf).1 ())hTgt:(βf).2 () = C.toTgt ((βf).1 ())h_eq:1 = 2β’ False
All goals completed! π
}
(b) We can formalise the products {A \times B}, {A \times D}, and {A \times C} as follows:
def AxB : IrreflexiveGraph := {
carrierA := Fin 2
carrierD := Fin 2 Γ Fin 2
toSrc := fun _ β¦ (0, 0)
toTgt := fun
| 0 => (1, 0)
| 1 => (1, 1)
}
def AxD : IrreflexiveGraph := {
carrierA := Empty
carrierD := Fin 2
toSrc := Empty.elim
toTgt := Empty.elim
}
def AxC : IrreflexiveGraph := {
carrierA := Fin 2
carrierD := Fin 2 Γ Fin 3
toSrc := fun _ β¦ (0, 1)
toTgt := fun
| 0 => (1, 0)
| 1 => (1, 2)
}
(c) In the same manner as part (b), we can formalise {A \times (B + D)} as follows:
def AxBuD : IrreflexiveGraph := {
carrierA := Fin 2
carrierD := Fin 2 Γ Fin 3
toSrc := fun _ β¦ (0, 0)
toTgt := fun
| 0 => (1, 0)
| 1 => (1, 1)
}
(d) We can then use our definitions from parts (b) and (c) to show that {A \times (B + D)} is isomorphic to {A \times C}.
example : AxBuD β
AxC := β’ AxBuD β
AxC
fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ AxBuD β
AxC
exact {
hom := β¨(fun a β¦ a, fD),
fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ (fun a β¦ a, fD).2 β AxBuD.toSrc = AxC.toSrc β (fun a β¦ a, fD).1 β§
(fun a β¦ a, fD).2 β AxBuD.toTgt = AxC.toTgt β (fun a β¦ a, fD).1
fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ (fun a β¦ a, fD).2 β AxBuD.toSrc = AxC.toSrc β (fun a β¦ a, fD).1fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ (fun a β¦ a, fD).2 β AxBuD.toTgt = AxC.toTgt β (fun a β¦ a, fD).1
fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ (fun a β¦ a, fD).2 β AxBuD.toSrc = AxC.toSrc β (fun a β¦ a, fD).1 All goals completed! π
fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ (fun a β¦ a, fD).2 β AxBuD.toTgt = AxC.toTgt β (fun a β¦ a, fD).1 fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)d:AxBuD.carrierAβ’ ((fun a β¦ a, fD).2 β AxBuD.toTgt) d = (AxC.toTgt β (fun a β¦ a, fD).1) d
fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)d:Fin 2β’ ((fun a β¦ a, fD).2 β AxBuD.toTgt) d = (AxC.toTgt β (fun a β¦ a, fD).1) d
fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ ((fun a β¦ a, fD).2 β AxBuD.toTgt) ((fun i β¦ i) β¨0, β―β©) = (AxC.toTgt β (fun a β¦ a, fD).1) ((fun i β¦ i) β¨0, β―β©)fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ ((fun a β¦ a, fD).2 β AxBuD.toTgt) ((fun i β¦ i) β¨1, β―β©) = (AxC.toTgt β (fun a β¦ a, fD).1) ((fun i β¦ i) β¨1, β―β©) fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ ((fun a β¦ a, fD).2 β AxBuD.toTgt) ((fun i β¦ i) β¨0, β―β©) = (AxC.toTgt β (fun a β¦ a, fD).1) ((fun i β¦ i) β¨0, β―β©)fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ ((fun a β¦ a, fD).2 β AxBuD.toTgt) ((fun i β¦ i) β¨1, β―β©) = (AxC.toTgt β (fun a β¦ a, fD).1) ((fun i β¦ i) β¨1, β―β©) All goals completed! πβ©
inv := β¨(fun a β¦ a, fD),
fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ (fun a β¦ a, fD).2 β AxC.toSrc = AxBuD.toSrc β (fun a β¦ a, fD).1 β§
(fun a β¦ a, fD).2 β AxC.toTgt = AxBuD.toTgt β (fun a β¦ a, fD).1
fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ (fun a β¦ a, fD).2 β AxC.toSrc = AxBuD.toSrc β (fun a β¦ a, fD).1fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ (fun a β¦ a, fD).2 β AxC.toTgt = AxBuD.toTgt β (fun a β¦ a, fD).1
fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ (fun a β¦ a, fD).2 β AxC.toSrc = AxBuD.toSrc β (fun a β¦ a, fD).1 All goals completed! π
fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ (fun a β¦ a, fD).2 β AxC.toTgt = AxBuD.toTgt β (fun a β¦ a, fD).1 fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)d:AxC.carrierAβ’ ((fun a β¦ a, fD).2 β AxC.toTgt) d = (AxBuD.toTgt β (fun a β¦ a, fD).1) d
fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)d:Fin 2β’ ((fun a β¦ a, fD).2 β AxC.toTgt) d = (AxBuD.toTgt β (fun a β¦ a, fD).1) d
fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ ((fun a β¦ a, fD).2 β AxC.toTgt) ((fun i β¦ i) β¨0, β―β©) = (AxBuD.toTgt β (fun a β¦ a, fD).1) ((fun i β¦ i) β¨0, β―β©)fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ ((fun a β¦ a, fD).2 β AxC.toTgt) ((fun i β¦ i) β¨1, β―β©) = (AxBuD.toTgt β (fun a β¦ a, fD).1) ((fun i β¦ i) β¨1, β―β©) fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ ((fun a β¦ a, fD).2 β AxC.toTgt) ((fun i β¦ i) β¨0, β―β©) = (AxBuD.toTgt β (fun a β¦ a, fD).1) ((fun i β¦ i) β¨0, β―β©)fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ ((fun a β¦ a, fD).2 β AxC.toTgt) ((fun i β¦ i) β¨1, β―β©) = (AxBuD.toTgt β (fun a β¦ a, fD).1) ((fun i β¦ i) β¨1, β―β©) All goals completed! πβ©
hom_inv_id := fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ β¨(fun a β¦ a, fD), β―β© β β¨(fun a β¦ a, fD), β―β© = π AxBuD
fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ (β(β¨(fun a β¦ a, fD), β―β© β β¨(fun a β¦ a, fD), β―β©)).1 = (β(π AxBuD)).1fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ (β(β¨(fun a β¦ a, fD), β―β© β β¨(fun a β¦ a, fD), β―β©)).2 = (β(π AxBuD)).2
fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ (β(β¨(fun a β¦ a, fD), β―β© β β¨(fun a β¦ a, fD), β―β©)).1 = (β(π AxBuD)).1 All goals completed! π
fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ (β(β¨(fun a β¦ a, fD), β―β© β β¨(fun a β¦ a, fD), β―β©)).2 = (β(π AxBuD)).2 fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)d:AxBuD.carrierDβ’ (β(β¨(fun a β¦ a, fD), β―β© β β¨(fun a β¦ a, fD), β―β©)).2 d = (β(π AxBuD)).2 d
fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)d:Fin 2 Γ Fin 3β’ (β(β¨(fun a β¦ a, fD), β―β© β β¨(fun a β¦ a, fD), β―β©)).2 d = (β(π AxBuD)).2 d
fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ (β(β¨(fun a β¦ a, fD), β―β© β β¨(fun a β¦ a, fD), β―β©)).2 ((fun i β¦ i) β¨0, β―β©, (fun i β¦ i) β¨0, β―β©) =
(β(π AxBuD)).2 ((fun i β¦ i) β¨0, β―β©, (fun i β¦ i) β¨0, β―β©)fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ (β(β¨(fun a β¦ a, fD), β―β© β β¨(fun a β¦ a, fD), β―β©)).2 ((fun i β¦ i) β¨0, β―β©, (fun i β¦ i) β¨1, β―β©) =
(β(π AxBuD)).2 ((fun i β¦ i) β¨0, β―β©, (fun i β¦ i) β¨1, β―β©)fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ (β(β¨(fun a β¦ a, fD), β―β© β β¨(fun a β¦ a, fD), β―β©)).2 ((fun i β¦ i) β¨0, β―β©, (fun i β¦ i) β¨2, β―β©) =
(β(π AxBuD)).2 ((fun i β¦ i) β¨0, β―β©, (fun i β¦ i) β¨2, β―β©)fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ (β(β¨(fun a β¦ a, fD), β―β© β β¨(fun a β¦ a, fD), β―β©)).2 ((fun i β¦ i) β¨1, β―β©, (fun i β¦ i) β¨0, β―β©) =
(β(π AxBuD)).2 ((fun i β¦ i) β¨1, β―β©, (fun i β¦ i) β¨0, β―β©)fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ (β(β¨(fun a β¦ a, fD), β―β© β β¨(fun a β¦ a, fD), β―β©)).2 ((fun i β¦ i) β¨1, β―β©, (fun i β¦ i) β¨1, β―β©) =
(β(π AxBuD)).2 ((fun i β¦ i) β¨1, β―β©, (fun i β¦ i) β¨1, β―β©)fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ (β(β¨(fun a β¦ a, fD), β―β© β β¨(fun a β¦ a, fD), β―β©)).2 ((fun i β¦ i) β¨1, β―β©, (fun i β¦ i) β¨2, β―β©) =
(β(π AxBuD)).2 ((fun i β¦ i) β¨1, β―β©, (fun i β¦ i) β¨2, β―β©) fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ (β(β¨(fun a β¦ a, fD), β―β© β β¨(fun a β¦ a, fD), β―β©)).2 ((fun i β¦ i) β¨0, β―β©, (fun i β¦ i) β¨0, β―β©) =
(β(π AxBuD)).2 ((fun i β¦ i) β¨0, β―β©, (fun i β¦ i) β¨0, β―β©)fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ (β(β¨(fun a β¦ a, fD), β―β© β β¨(fun a β¦ a, fD), β―β©)).2 ((fun i β¦ i) β¨0, β―β©, (fun i β¦ i) β¨1, β―β©) =
(β(π AxBuD)).2 ((fun i β¦ i) β¨0, β―β©, (fun i β¦ i) β¨1, β―β©)fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ (β(β¨(fun a β¦ a, fD), β―β© β β¨(fun a β¦ a, fD), β―β©)).2 ((fun i β¦ i) β¨0, β―β©, (fun i β¦ i) β¨2, β―β©) =
(β(π AxBuD)).2 ((fun i β¦ i) β¨0, β―β©, (fun i β¦ i) β¨2, β―β©)fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ (β(β¨(fun a β¦ a, fD), β―β© β β¨(fun a β¦ a, fD), β―β©)).2 ((fun i β¦ i) β¨1, β―β©, (fun i β¦ i) β¨0, β―β©) =
(β(π AxBuD)).2 ((fun i β¦ i) β¨1, β―β©, (fun i β¦ i) β¨0, β―β©)fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ (β(β¨(fun a β¦ a, fD), β―β© β β¨(fun a β¦ a, fD), β―β©)).2 ((fun i β¦ i) β¨1, β―β©, (fun i β¦ i) β¨1, β―β©) =
(β(π AxBuD)).2 ((fun i β¦ i) β¨1, β―β©, (fun i β¦ i) β¨1, β―β©)fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ (β(β¨(fun a β¦ a, fD), β―β© β β¨(fun a β¦ a, fD), β―β©)).2 ((fun i β¦ i) β¨1, β―β©, (fun i β¦ i) β¨2, β―β©) =
(β(π AxBuD)).2 ((fun i β¦ i) β¨1, β―β©, (fun i β¦ i) β¨2, β―β©) All goals completed! π
inv_hom_id := fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ β¨(fun a β¦ a, fD), β―β© β β¨(fun a β¦ a, fD), β―β© = π AxC
fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ (β(β¨(fun a β¦ a, fD), β―β© β β¨(fun a β¦ a, fD), β―β©)).1 = (β(π AxC)).1fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ (β(β¨(fun a β¦ a, fD), β―β© β β¨(fun a β¦ a, fD), β―β©)).2 = (β(π AxC)).2
fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ (β(β¨(fun a β¦ a, fD), β―β© β β¨(fun a β¦ a, fD), β―β©)).1 = (β(π AxC)).1 All goals completed! π
fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ (β(β¨(fun a β¦ a, fD), β―β© β β¨(fun a β¦ a, fD), β―β©)).2 = (β(π AxC)).2 fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)d:AxC.carrierDβ’ (β(β¨(fun a β¦ a, fD), β―β© β β¨(fun a β¦ a, fD), β―β©)).2 d = (β(π AxC)).2 d
fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)d:Fin 2 Γ Fin 3β’ (β(β¨(fun a β¦ a, fD), β―β© β β¨(fun a β¦ a, fD), β―β©)).2 d = (β(π AxC)).2 d
fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ (β(β¨(fun a β¦ a, fD), β―β© β β¨(fun a β¦ a, fD), β―β©)).2 ((fun i β¦ i) β¨0, β―β©, (fun i β¦ i) β¨0, β―β©) =
(β(π AxC)).2 ((fun i β¦ i) β¨0, β―β©, (fun i β¦ i) β¨0, β―β©)fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ (β(β¨(fun a β¦ a, fD), β―β© β β¨(fun a β¦ a, fD), β―β©)).2 ((fun i β¦ i) β¨0, β―β©, (fun i β¦ i) β¨1, β―β©) =
(β(π AxC)).2 ((fun i β¦ i) β¨0, β―β©, (fun i β¦ i) β¨1, β―β©)fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ (β(β¨(fun a β¦ a, fD), β―β© β β¨(fun a β¦ a, fD), β―β©)).2 ((fun i β¦ i) β¨0, β―β©, (fun i β¦ i) β¨2, β―β©) =
(β(π AxC)).2 ((fun i β¦ i) β¨0, β―β©, (fun i β¦ i) β¨2, β―β©)fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ (β(β¨(fun a β¦ a, fD), β―β© β β¨(fun a β¦ a, fD), β―β©)).2 ((fun i β¦ i) β¨1, β―β©, (fun i β¦ i) β¨0, β―β©) =
(β(π AxC)).2 ((fun i β¦ i) β¨1, β―β©, (fun i β¦ i) β¨0, β―β©)fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ (β(β¨(fun a β¦ a, fD), β―β© β β¨(fun a β¦ a, fD), β―β©)).2 ((fun i β¦ i) β¨1, β―β©, (fun i β¦ i) β¨1, β―β©) =
(β(π AxC)).2 ((fun i β¦ i) β¨1, β―β©, (fun i β¦ i) β¨1, β―β©)fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ (β(β¨(fun a β¦ a, fD), β―β© β β¨(fun a β¦ a, fD), β―β©)).2 ((fun i β¦ i) β¨1, β―β©, (fun i β¦ i) β¨2, β―β©) =
(β(π AxC)).2 ((fun i β¦ i) β¨1, β―β©, (fun i β¦ i) β¨2, β―β©) fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ (β(β¨(fun a β¦ a, fD), β―β© β β¨(fun a β¦ a, fD), β―β©)).2 ((fun i β¦ i) β¨0, β―β©, (fun i β¦ i) β¨0, β―β©) =
(β(π AxC)).2 ((fun i β¦ i) β¨0, β―β©, (fun i β¦ i) β¨0, β―β©)fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ (β(β¨(fun a β¦ a, fD), β―β© β β¨(fun a β¦ a, fD), β―β©)).2 ((fun i β¦ i) β¨0, β―β©, (fun i β¦ i) β¨1, β―β©) =
(β(π AxC)).2 ((fun i β¦ i) β¨0, β―β©, (fun i β¦ i) β¨1, β―β©)fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ (β(β¨(fun a β¦ a, fD), β―β© β β¨(fun a β¦ a, fD), β―β©)).2 ((fun i β¦ i) β¨0, β―β©, (fun i β¦ i) β¨2, β―β©) =
(β(π AxC)).2 ((fun i β¦ i) β¨0, β―β©, (fun i β¦ i) β¨2, β―β©)fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ (β(β¨(fun a β¦ a, fD), β―β© β β¨(fun a β¦ a, fD), β―β©)).2 ((fun i β¦ i) β¨1, β―β©, (fun i β¦ i) β¨0, β―β©) =
(β(π AxC)).2 ((fun i β¦ i) β¨1, β―β©, (fun i β¦ i) β¨0, β―β©)fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ (β(β¨(fun a β¦ a, fD), β―β© β β¨(fun a β¦ a, fD), β―β©)).2 ((fun i β¦ i) β¨1, β―β©, (fun i β¦ i) β¨1, β―β©) =
(β(π AxC)).2 ((fun i β¦ i) β¨1, β―β©, (fun i β¦ i) β¨1, β―β©)fD:Fin 2 Γ Fin 3 βΆ Fin 2 Γ Fin 3 :=
fun x β¦
match x with
| (0, 0) => (0, 1)
| (0, 1) => (0, 0)
| (1, 1) => (1, 2)
| (1, 2) => (1, 1)
| (dβ, dβ) => (dβ, dβ)β’ (β(β¨(fun a β¦ a, fD), β―β© β β¨(fun a β¦ a, fD), β―β©)).2 ((fun i β¦ i) β¨1, β―β©, (fun i β¦ i) β¨2, β―β©) =
(β(π AxC)).2 ((fun i β¦ i) β¨1, β―β©, (fun i β¦ i) β¨2, β―β©) All goals completed! π
}