Constructive non-standard analysis