; Copyright (C) 2006 Will M. Farr ; ; This program is free software; you can redistribute it and/or modify ; it under the terms of the GNU General Public License as published by ; the Free Software Foundation; either version 2 of the License, or ; (at your option) any later version. ; ; This program is distributed in the hope that it will be useful, ; but WITHOUT ANY WARRANTY; without even the implied warranty of ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ; GNU General Public License for more details. ; ; You should have received a copy of the GNU General Public License along ; with this program; if not, write to the Free Software Foundation, Inc., ; 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. (module lie-group-Rn "generics.ss" (require "lie-groups.ss" "manifolds.ss" "tuples.ss") (provide Rn) (define (Rn n) (let-values (((Rn-chart Rn) (recursive-make (Rn-chart :dim n :chi (lambda (m) (slot-ref m 'point)) :chiinv (lambda (x) (make :point x :group Rn))) (Rn :standard-chart Rn-chart :identity ((slot-ref Rn-chart 'chiinv) (up-unfold (lambda (i) 0) n)) :multiplication (let ((chi (slot-ref Rn-chart 'chi)) (chiinv (slot-ref Rn-chart 'chiinv))) (lambda (g1 g2) (chiinv (+ (chi g1) (chi g2))))) :inverse (let ((chi (slot-ref Rn-chart 'chi)) (chiinv (slot-ref Rn-chart 'chiinv))) (lambda (g) (chiinv (- (chi g))))))))) Rn)))