Skip to content

Commit 264743a

Browse files
committed
Add morphism instances for N.to_nat and N.of_nat
1 parent d79c36c commit 264743a

File tree

1 file changed

+30
-2
lines changed

1 file changed

+30
-2
lines changed

theories/ssrZ.v

+30-2
Original file line numberDiff line numberDiff line change
@@ -95,19 +95,47 @@ HB.instance Definition _ := GRing.isSemiAdditive.Build N nat nat_of_bin
9595
nat_of_bin_is_semi_additive.
9696

9797
Fact bin_of_nat_is_multiplicative : multiplicative bin_of_nat.
98-
Proof. by split => // m n; rewrite /GRing.mul /=; lia. Qed.
98+
Proof. by split=> // m n; rewrite /GRing.mul /=; lia. Qed.
9999

100100
#[export]
101101
HB.instance Definition _ := GRing.isMultiplicative.Build nat N bin_of_nat
102102
bin_of_nat_is_multiplicative.
103103

104104
Fact nat_of_bin_is_multiplicative : multiplicative nat_of_bin.
105-
Proof. exact: can2_rmorphism bin_of_natK nat_of_binK. Qed.
105+
Proof. by split=> // m n; rewrite /GRing.mul /=; lia. Qed.
106106

107107
#[export]
108108
HB.instance Definition _ := GRing.isMultiplicative.Build N nat nat_of_bin
109109
nat_of_bin_is_multiplicative.
110110

111+
Fact N_of_nat_is_semi_additive : semi_additive N.of_nat.
112+
Proof. by split=> //= m n; rewrite /GRing.add /=; lia. Qed.
113+
114+
#[export]
115+
HB.instance Definition _ := GRing.isSemiAdditive.Build nat N N.of_nat
116+
N_of_nat_is_semi_additive.
117+
118+
Fact N_to_nat_is_semi_additive : semi_additive N.to_nat.
119+
Proof. by split=> //= m n; rewrite /GRing.add /=; lia. Qed.
120+
121+
#[export]
122+
HB.instance Definition _ := GRing.isSemiAdditive.Build N nat N.to_nat
123+
N_to_nat_is_semi_additive.
124+
125+
Fact N_of_nat_is_multiplicative : multiplicative N.of_nat.
126+
Proof. by split=> // m n; rewrite /GRing.mul /=; lia. Qed.
127+
128+
#[export]
129+
HB.instance Definition _ := GRing.isMultiplicative.Build nat N N.of_nat
130+
N_of_nat_is_multiplicative.
131+
132+
Fact N_to_nat_is_multiplicative : multiplicative N.to_nat.
133+
Proof. by split=> // m n; rewrite /GRing.mul /=; lia. Qed.
134+
135+
#[export]
136+
HB.instance Definition _ := GRing.isMultiplicative.Build N nat N.to_nat
137+
N_to_nat_is_multiplicative.
138+
111139
Implicit Types (m n : Z).
112140

113141
Fact eqZP : Equality.axiom Z.eqb.

0 commit comments

Comments
 (0)