None : option A
| Some : A → option A.
-ndefinition option_ind : ΠA:Type.ΠP:option A → Prop.P (None A) → (Πa:A.P (Some A a)) → Πo:option A.P o ≝
-λA:Type.λP:option A → Prop.λp:P (None A).λf:Πa:A.P (Some A a).λo:option A.
- match o with [ None ⇒ p | Some (a:A) ⇒ f a ].
+ndefinition option_ind : ΠA:Type.ΠP:option A → Prop.P (None A) → (Πa:A.P (Some A a)) → Πop:option A.P op ≝
+λA:Type.λP:option A → Prop.λp:P (None A).λf:Πa:A.P (Some A a).λop:option A.
+ match op with [ None ⇒ p | Some (a:A) ⇒ f a ].
-ndefinition option_rec : ΠA:Type.ΠP:option A → Set.P (None A) → (Πa:A.P (Some A a)) → Πo:option A.P o ≝
-λA:Type.λP:option A → Set.λp:P (None A).λf:Πa:A.P (Some A a).λo:option A.
- match o with [ None ⇒ p | Some (a:A) ⇒ f a ].
+ndefinition option_rec : ΠA:Type.ΠP:option A → Set.P (None A) → (Πa:A.P (Some A a)) → Πop:option A.P op ≝
+λA:Type.λP:option A → Set.λp:P (None A).λf:Πa:A.P (Some A a).λop:option A.
+ match op with [ None ⇒ p | Some (a:A) ⇒ f a ].
-ndefinition option_rect : ΠA:Type.ΠP:option A → Type.P (None A) → (Πa:A.P (Some A a)) → Πo:option A.P o ≝
-λA:Type.λP:option A → Type.λp:P (None A).λf:Πa:A.P (Some A a).λo:option A.
- match o with [ None ⇒ p | Some (a:A) ⇒ f a ].
+ndefinition option_rect : ΠA:Type.ΠP:option A → Type.P (None A) → (Πa:A.P (Some A a)) → Πop:option A.P op ≝
+λA:Type.λP:option A → Type.λp:P (None A).λf:Πa:A.P (Some A a).λop:option A.
+ match op with [ None ⇒ p | Some (a:A) ⇒ f a ].
ndefinition eq_option ≝
-λT.λo1,o2:option T.λf:T → T → bool.
- match o1 with
- [ None ⇒ match o2 with [ None ⇒ true | Some _ ⇒ false ]
- | Some x1 ⇒ match o2 with [ None ⇒ false | Some x2 ⇒ f x1 x2 ]
+λT.λop1,op2:option T.λf:T → T → bool.
+ match op1 with
+ [ None ⇒ match op2 with [ None ⇒ true | Some _ ⇒ false ]
+ | Some x1 ⇒ match op2 with [ None ⇒ false | Some x2 ⇒ f x1 x2 ]
].
(* option map = match ... with [ None ⇒ None ? | Some .. ⇒ .. ] *)