aboutsummaryrefslogtreecommitdiff
path: root/src/Compilers/Named/PositiveContext/Defaults.v
blob: 066de61cb2ff00a954a2aa932d646981209d01ca (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Require Import Coq.Lists.List.
Require Import Coq.Numbers.BinNums.
Require Import Crypto.Compilers.Named.Syntax.
Require Import Crypto.Compilers.Syntax.
Require Import Crypto.Compilers.Named.PositiveContext.
Require Import Crypto.Compilers.Named.CountLets.
Require Import Crypto.Compilers.CountLets.

Section language.
  Context {base_type_code : Type}
          {op : flat_type base_type_code -> flat_type base_type_code -> Type}.
  Definition default_names_forf {var} (dummy : forall t, var t) {t} (e : exprf base_type_code op (var:=var) t) : list positive
    := map BinPos.Pos.of_succ_nat (seq 0 (count_let_bindersf dummy e)).
  Definition default_names_for {var} (dummy : forall t, var t) {t} (e : expr base_type_code op (var:=var) t) : list positive
    := map BinPos.Pos.of_succ_nat (seq 0 (count_binders dummy e)).
  Definition DefaultNamesFor {t} (e : Expr base_type_code op t) : list positive
    := map BinPos.Pos.of_succ_nat (seq 0 (CountBinders e)).
End language.

Module Named.
  Section language.
    Context {base_type_code : Type}
            {op : flat_type base_type_code -> flat_type base_type_code -> Type}.
    Definition default_names_forf {Name} {t} (e : Named.exprf base_type_code op Name t) : list positive
      := map BinPos.Pos.of_succ_nat (seq 0 (Named.CountLets.count_let_bindersf e)).
    Definition default_names_for {Name} {t} (e : Named.expr base_type_code op Name t) : list positive
      := map BinPos.Pos.of_succ_nat (seq 0 (Named.CountLets.count_binders e)).
  End language.
End Named.