anchor.diff:      Label : string
       User : Uri
       Used : FileVersion seq
  -    InformedBy : Uri seq
  +    InformedBy : Uri list 
       }
     with static member fromCommit r = function
  -    | Commit c,Commit c' -> {
  -        Id = Uri.commit r c
  -        Time = c.Author.When
  -        Label = c.Message
  -        User = Uri.identity c
  -        Used = FileVersion.from c c' r
  -        InformedBy = c.Parents |> Seq.map (Uri.commit r)
  -        }
  +        | Commit c,Commit c' -> {
  +            Id = Uri.commit r c
  +            Time = c.Author.When
  +            Label = c.Message
  +            User = Uri.identity c
  +            Used = FileVersion.from (c,c',r)
  +            InformedBy = [for p in c.Parents -> Uri.commit r p]
  +          }
  +       static member fromWorkingArea r = function
  +        | WorkingArea (wx,Commit c) -> {
  +            Id = Uri.workingarea
  +            Time = DateTimeOffset.Now
  +            Label = "Uncommitted changes in working area"
  +            User = Uri System.Environment.UserName
  +            Used = FileVersion.from (wx,r)
  +            InformedBy = [Uri.commit r c]
  +          } 
   
   module TTL =
     open Prov
  
positive.code:            (qn "prov:hadRole",literal "author, committer")
             ])
          ])
  
      for u in act.Used do
        triples (puri act.Id,[qn "prov:uses",puri u.Id])
  
negative.code:     | Commit of LibGit2Sharp.Commit
      
    type Repository =
      | Repository of LibGit2Sharp.Repository
  
    type WorkingArea =
      | WorkingArea of StatusEntry list * Commit
  
    let repo p = Repository  ( new LibGit2Sharp.Repository (p) )
  
  