[Agda] new generalize feature, first version
Peter Divianszky
divipp at gmail.com
Sun Apr 1 20:04:24 CEST 2018
Andrés, thanks for the pointers.
Yes, it seems that Coq also has a forall-generalisation.
The main difference is that it is not possible to specify the types of
the variables to be generalized.
On 2018-04-01 17:18, Andrés Sicard-Ramírez wrote:
> On 29 March 2018 at 07:13, Peter Divianszky <divipp at gmail.com> wrote:
>> Dear Agda users and implementors,
>>
>> I implemented a first version of forall-generalization, and I would like
>> to get feedback on it.
>>
>>
>> For users
>> ---------
>>
>> An example Agda file can be found at
>> https://github.com/divipp/agda/blob/master/test/Succeed/Generalize.agda
>>
>> Suppose that the following Set formers were postulated:
>>
>> postulate
>> Con : Set
>> Ty : (Γ : Con) → Set
>> Sub : (Γ Δ : Con) → Set
>> Tm : (Γ : Con)(A : Ty Γ) → Set
>>
>> There is a new keyword 'generalize', which accept declarations like
>> 'field' for records:
>>
>> generalize
>> {Γ Δ Θ} : Con
>> {A B C} : Ty _
>> {σ δ ν} : Sub _ _
>> {t u v} : Tm _ _
>>
>> After these 12 declarations
>>
>> (1) Γ, Δ and Θ behave as Con-typed terms, but they are automatically
>> forall-generalized, so, for example
>>
>> postulate
>> id : Sub Γ Γ
>> _∘_ : Sub Θ Δ → Sub Γ Θ → Sub Γ Δ
>>
>
> It seems that Coq also has a forall-generalisation mechanism (which
> I'm not familiarised).
>
> (* Tested with Coq 8.7.1. *)
>
> Require Import Unicode.Utf8.
>
> Axiom Con : Set.
> Axiom Sub : Con → Con → Set.
>
> Generalizable All Variables.
> Axiom id : `{Sub Γ Γ}.
> Axiom comp : `{Sub Θ Δ → Sub Γ Θ → Sub Γ Δ}.
>
>
> See Section 2.7.19 of
> https://github.com/coq/coq/releases/download/V8.7.2/coq-8.7.2-reference-manual.pdf
> (because Coq website ( https://coq.inria.fr/ ) seems down).
>
More information about the Agda
mailing list