Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove T_abs with (Path = T_sub) and add T_abs & T_sub syntax... #19

Open
wants to merge 2 commits into
base: 1ml-prime
Choose a base branch
from

Commits on Aug 24, 2020

  1. Remove T_abs with (Path = T_sub) and add T_abs & T_sub syntax...

    ...for type refinement.
    
    The new
    
        T_abs & T_sub
    
    mechanism is similar to the old
    
        T_abs with (Path = T_sub)
    
    mechanism and also to the include mechanism
    
        {...T_abs; ...T_sub}
    
    The main difference is that, instead of using a path to target a specific
    substructure or requiring that no declarations overlap, an intersection,
    `T_int`, of the nested declarations of `T_abs` and `T_sub`, is computed.
    
    Then it is checked whether `T_abs :> T_int` and if so a substitution, `𝛿`, is
    obtained.  Finally the nested declarations of `𝛿(T_abs)` and `T_sub` are merged.
    
    Also, in `T1 & T2` both `T1` and `T2` are elaborated in the same environment
    whereas in `{...T1; ...T2}` the environment for `T2` includes declarations from
    `T1` and in `T1 with (P = T2)` the path `P` is specific to `T1`.
    
    When defined, `T1 & T2` is always a subtype of both `T1` and `T2`
    
        T1 & T2  :>  T1
        T1 & T2  :>  T2
    polytypic committed Aug 24, 2020
    Configuration menu
    Copy the full SHA
    d0e549b View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    0778534 View commit details
    Browse the repository at this point in the history